#ifndef ICPENET_H
#define ICPENET_H

#include <QObject>
#include <QString>
#include <QHash>
#include <QFile>
#include <QSharedPointer>

/**
 * @brief The ICpeNet class CpeManager网络类接口
 */
class ICpeNet
{
public:
    virtual ~ICpeNet() = default;

    /**
     * @brief get      原始GET方法
     * @param strPlugin 发起者插件名称
     * @param iInfoID   消息ID
     * @param strUrl    URL
     * @param mapHeader 请求头
     */
    virtual void get(const QString &strPlugin, int iInfoID, const QString &strUrl, QSharedPointer<QHash<QString, QString>> spMapHeader = nullptr) = 0;

    /**
     * @brief get      原始同步GET方法
     * @param strUrl    URL
     * @param mapHeader 请求头
     */
    virtual void get(const QString &strUrl, QByteArray &strReturn, QSharedPointer<QHash<QString, QString>> spMapHeader = nullptr) = 0;

    /**
     * @brief _post     原始POST方法
     * @param strPlugin 发起者插件名称
     * @param iInfoID   消息ID
     * @param strUrl    URL
     * @param strPost   POST内容
     * @param mapHeader 请求头
     */
    virtual void post(const QString &strPlugin, int iInfoID, const QString &strUrl, const QString &strPost, QSharedPointer<QHash<QString, QString>> spMapHeader = nullptr) = 0;

    /**
     * @brief downloadPlugin    下载插件
     * @param strPlugin         发起者
     * @param iInfoID           消息ID
     * @param strDownloadPlugin 下载的插件名
     * @param strUrl            网址
     * @param strPath           保存路径
     */
    virtual void downloadPlugin(const QString &strPlugin, int iInfoID, const QString &strDownloadPlugin, const QString &strUrl, const QString &strPath) = 0;
    /**
     * @brief setSync   设置http的同步/异步，true为同步阻塞请求，false为异步请求
     * @param bSwitch   开关
     */
    virtual void setSync(bool bSwitch) = 0;

    /**
     * @brief resetCookie   清除Cookie
     */
    virtual void resetCookie() = 0;
};

QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(ICpeNet, "com.kk.cpemanager.icpenet")
QT_END_NAMESPACE

#endif
